Add Sphinx/Doxygen/Breathe documentation framework for phlex::experimental API#323
Add Sphinx/Doxygen/Breathe documentation framework for phlex::experimental API#323
Conversation
|
@copilot I think for maximum clarity, it would be better to reset this branch to upstream/main and then re-do the work following the current philosophy, functions/class structure, etc. |
Done. In commit The PR now shows only 13 files changed (135 additions, 0 deletions from main): the |
0712ae9 to
2095c80
Compare
There was a problem hiding this comment.
Pull request overview
Adds a Sphinx + Doxygen + Breathe documentation scaffold under docs/ to generate API reference documentation for key phlex::experimental types, along with dependency requirements and gitignore entries for generated outputs.
Changes:
- Add Sphinx project entrypoint (
index.rst) and minimalconf.pywired to Breathe. - Add API reference
.rstpages for severalphlex::experimentalclasses. - Add Doxygen configuration + Python requirements, and ignore generated docs artifacts in
.gitignore.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| docs/source/index.rst | Adds top-level Sphinx landing page and toctree for API pages. |
| docs/source/conf.py | Adds Sphinx configuration with Breathe integration. |
| docs/source/api/graph_proxy.rst | Adds API page for phlex::experimental::graph_proxy. |
| docs/source/api/framework_graph.rst | Adds API page for framework_graph and layer_sentry. |
| docs/source/api/registrar.rst | Adds API page for phlex::experimental::registrar. |
| docs/source/api/declared_transform.rst | Adds API page for declared_transform. |
| docs/source/api/declared_fold.rst | Adds API page for declared_fold. |
| docs/source/api/declared_unfold.rst | Adds API page for declared_unfold. |
| docs/source/api/product_store.rst | Adds API page for product_store. |
| docs/source/api/products.rst | Adds API page for products. |
| docs/requirements.txt | Adds Python dependencies for building docs. |
| docs/Doxyfile | Adds Doxygen configuration to emit XML for Breathe. |
| .gitignore | Ignores generated Doxygen/Sphinx build output directories. |
Comments suppressed due to low confidence (1)
docs/requirements.txt:4
- The PR description says dependencies are “pinned”, but
requirements.txtuses version ranges (e.g.,>=9.1,<10) which will allow new releases and can change doc build output over time. Either pin exact versions (e.g.,==...) to match the description, or update the description to reflect that these are minimum/compatible ranges. Also remove the trailing blank line at EOF to avoid generating a 4th empty requirement line.
sphinx>=9.1,<10
breathe>=4.36,<5
sphinx-rtd-theme>=3.1,<4
|
@phlexbot python-fix |
|
Automatic ruff fixes pushed (commit af87c94). |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #323 +/- ##
==========================================
- Coverage 86.51% 86.47% -0.05%
==========================================
Files 119 119
Lines 2403 2403
Branches 387 387
==========================================
- Hits 2079 2078 -1
- Misses 206 207 +1
Partials 118 118
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
824f679 to
a7a5bf2
Compare
dcbc52d to
e416cbc
Compare
e416cbc to
85a095f
Compare
85a095f to
a62c7df
Compare
Re-evaluated after rebase. The only needed fix was removing the |
|
@copilot Does any of the documentation provided need to be updated due to changes in the code, or are there any new classes/files that would have been covered by the goals of the original prompt? |
All currently documented classes remain accurate. Two new user-facing classes were added to the codebase after the original branch was created and are now covered:
Both are now documented in |
…work This commit introduces the foundational infrastructure for documenting the C++ codebase using a Sphinx, Doxygen, and Breathe toolchain. Key changes include: - A new `docs/` directory to house all documentation-related files. - Configuration files for Sphinx (`conf.py`) and Doxygen (`Doxyfile`). - A `requirements.txt` file listing the necessary Python dependencies for building the documentation. - The `phlex/core/graph_proxy.hpp` header has been fully documented with Doxygen comments to serve as a style guide and working example. - An initial Sphinx structure in `docs/source/` that integrates the Doxygen XML output via Breathe, making the `graph_proxy` documentation available on the documentation website. Initial plan Update docs: pin latest deps, fix version, expand API coverage, add .gitignore entries Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com> Reset branch to main and re-apply docs-only changes Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com> Fix docs for current codebase: correct version, class names, macros, and .gitignore Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
…ing entry points) Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
31b7611 to
3b11ebf
Compare
| INPUT = ../phlex ../form | ||
| OUTPUT_DIRECTORY = doxygen |
There was a problem hiding this comment.
INPUT and OUTPUT_DIRECTORY are written as relative paths that only work if Doxygen is invoked from docs/ (e.g., cd docs && doxygen Doxyfile). If someone runs doxygen docs/Doxyfile from the repo root (a common invocation), ../phlex/../form will point outside the repo and the XML will be written to <repo>/doxygen/, which won’t match the Sphinx Breathe path or the .gitignore entries. Consider making these paths robust to the invocation working directory (e.g., repo-root-relative paths) or add a documented wrapper/Makefile target that enforces running from docs/.
| INPUT = ../phlex ../form | |
| OUTPUT_DIRECTORY = doxygen | |
| # Paths are relative to the repository root; invoke as: doxygen docs/Doxyfile | |
| INPUT = phlex form | |
| OUTPUT_DIRECTORY = docs/doxygen |
| breathe_projects = { | ||
| "Phlex": "../doxygen/xml/", | ||
| } |
There was a problem hiding this comment.
breathe_projects["Phlex"] points to ../doxygen/xml/ relative to docs/source/, which assumes Doxygen writes XML to docs/doxygen/xml. With the current docs/Doxyfile, that location depends on the working directory used when invoking Doxygen, so Sphinx can easily fail to find the XML. Align this path with a Doxygen output location that’s stable (or document/enforce the expected invocation directory).
Adds a Sphinx + Doxygen + Breathe documentation scaffold under
docs/to generate API reference documentation for keyphlex::experimentaltypes, along with dependency requirements and gitignore entries for generated outputs.Documentation framework
docs/Doxyfile: Doxygen configuration for XML output consumed by Breathedocs/source/conf.py: Sphinx configuration with Breathe integration, version0.1.0matchingCMakeLists.txtdocs/source/index.rst: documentation index with toctreeDependency pinning
docs/requirements.txt:sphinx>=9.1,<10,breathe>=4.36,<5,sphinx-rtd-theme>=3.1,<4API pages
module_graph_proxy,source_graph_proxy,graph_proxy,framework_graph,registrar,declared_transform,declared_fold,declared_unfold,product_store,productsmodule_graph_proxyandsource_graph_proxyare the primary user-facing plugin entry points (fromphlex/module.hppandphlex/source.hpp) for writing algorithm modules and data sourcesDoxyfile configuration
FILE_PATTERNS = *.hpp *.cpp,EXCLUDE_PATTERNS = */detail/*PREDEFINEDmacros updated for current codebase (BOOST_DLL_ALIAS,PHLEX_DETAIL_REGISTER_PLUGIN)Housekeeping
.gitignore: addeddocs/doxygen/anddocs/build/for generated outputconf.py: module docstring added for ruff D100 compliance💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.